利用穷举法求解法插入4个乘号请访问:http://www.vcworld.net/bbs/viewthread.php?tid=8580&extra=
一、问题提出
在一个由n个数字组成的数字串中插入r个乘号(1<=r<n<16),将它分成r+1个整数,找出一种乘号的插入方法,使得r+1个整数的乘积最大。
例如,对给定的数串847313926,如何插入r=5个乘号,使其积最大?
二、动态规划设计
对于一般插入r个乘号,采用穷举已不适合。注意到插入r个乘号是一个多阶段决策问题,应用动态规划来求解是适宜的。
1.建立递推关系
设f(i,k)表示在前i位数中插入k个乘号所得乘积的最大值,a(i,j)表示从第i个数字到第j个数字所组成的j-i+1(i<=j)位整数值。
为了寻求递推关系,先看一个实例:对给定的847313926,如何插入r=5个乘号,使其乘积最大?我们的目标是为了求取最优值f(9,5)。
①设前8个数字中已插入4个乘号,则最大乘积为f(8,4)*6;
②设前7个数字中已插入4个乘号,则最大乘积为f(7,4)*26;
③设前6个数字中已插入4个乘号,则最大乘积为f(